itk_module_test()
set(ITKRegistrationCommonTests
    itkBSplineTransformParametersAdaptorTest.cxx
    itkDisplacementFieldTransformParametersAdaptorTest.cxx
    itkBSplineSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest.cxx
    itkGaussianSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest.cxx
    itkBSplineExponentialDiffeomorphicTransformParametersAdaptorTest.cxx
    itkGaussianExponentialDiffeomorphicTransformParametersAdaptorTest.cxx
    itkCenteredTransformInitializerTest.cxx
    itkCenteredVersorTransformInitializerTest.cxx
    itkMultiResolutionImageRegistrationMethodTest_1.cxx
    itkMultiResolutionImageRegistrationMethodTest_2.cxx
    itkImageRegistrationMethodTest_10.cxx
    itkImageRegistrationMethodTest_11.cxx
    itkImageRegistrationMethodTest_12.cxx
    itkImageRegistrationMethodTest_13.cxx
    itkImageRegistrationMethodTest_14.cxx
    itkImageRegistrationMethodTest_15.cxx
    itkImageRegistrationMethodTest_16.cxx
    itkMeanSquaresPointSetToImageMetricTest.cxx
    itkGradientDifferenceImageToImageMetricTest.cxx
    itkHistogramImageToImageMetricTest.cxx
    itkMutualInformationHistogramImageToImageMetricTest.cxx
    itkMeanReciprocalSquareDifferencePointSetToImageMetricTest.cxx
    itkMultiResolutionImageRegistrationMethodTest.cxx
    itkCompareHistogramImageToImageMetricTest.cxx
    itkMeanSquaresHistogramImageToImageMetricTest.cxx
    itkImageRegistrationMethodTest.cxx
    itkCorrelationCoefficientHistogramImageToImageMetricTest.cxx
    itkNormalizedCorrelationPointSetToImageMetricTest.cxx
    itkKullbackLeiblerCompareHistogramImageToImageMetricTest.cxx
    itkNormalizedMutualInformationHistogramImageToImageMetricTest.cxx
    itkPointSetToSpatialObjectDemonsRegistrationTest.cxx
    itkPointSetToImageRegistrationTest.cxx
    itkPointsLocatorTest.cxx
    itkKappaStatisticImageToImageMetricTest.cxx
    itkMattesMutualInformationImageToImageMetricTest.cxx
    itkMatchCardinalityImageToImageMetricTest.cxx
    itkMultiResolutionPyramidImageFilterTest.cxx
    itkImageRegistrationMethodTest_1.cxx
    itkImageRegistrationMethodTest_2.cxx
    itkImageRegistrationMethodTest_3.cxx
    itkImageRegistrationMethodTest_4.cxx
    itkImageRegistrationMethodTest_5.cxx
    itkImageRegistrationMethodTest_6.cxx
    itkImageRegistrationMethodTest_7.cxx
    itkImageRegistrationMethodTest_8.cxx
    itkImageRegistrationMethodTest_9.cxx
    itkRecursiveMultiResolutionPyramidImageFilterTest.cxx
    itkNormalizedCorrelationImageMetricTest.cxx
    itkMeanReciprocalSquareDifferenceImageMetricTest.cxx
    itkMeanSquaresImageMetricTest.cxx
    itkMutualInformationMetricTest.cxx
    itkPointSetToPointSetRegistrationTest.cxx
    itkImageToSpatialObjectRegistrationTest.cxx
    itkBlockMatchingImageFilterTest.cxx
    itkLandmarkBasedTransformInitializerTest.cxx
    itkImageRegistrationMethodTest_17.cxx
    itkEuclideanDistancePointMetricTest.cxx)

createtestdriver(ITKRegistrationCommon "${ITKRegistrationCommon-Test_LIBRARIES}" "${ITKRegistrationCommonTests}")

set(TEMP ${ITK_TEST_OUTPUT_DIR})

itk_add_test(
  NAME
  itkBSplineTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkBSplineTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkDisplacementFieldTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkDisplacementFieldTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkBSplineSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkBSplineSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkGaussianSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkGaussianSmoothingOnUpdateDisplacementFieldTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkBSplineExponentialDiffeomorphicTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkBSplineExponentialDiffeomorphicTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkGaussianExponentialDiffeomorphicTransformParametersAdaptorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkGaussianExponentialDiffeomorphicTransformParametersAdaptorTest)
itk_add_test(
  NAME
  itkCenteredTransformInitializerTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkCenteredTransformInitializerTest)
itk_add_test(
  NAME
  itkCenteredVersorTransformInitializerTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkCenteredVersorTransformInitializerTest)
itk_add_test(
  NAME
  itkMultiResolutionImageRegistrationMethodTest_1
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionImageRegistrationMethodTest_1)
itk_add_test(
  NAME
  itkMultiResolutionImageRegistrationMethodTest_2
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionImageRegistrationMethodTest_2)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_10
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_10)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_11
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_11)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_12
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_12)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_13
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_13)

#Temporarily output full results for debugging of experimental builds
#itk_add_test(NAME itkImageRegistrationMethodTest_14
#      COMMAND ITKRegistrationCommonTestDriver --redirectOutput ${TEMP}/#itkImageRegistrationMethodTest_14.txt
#    itkImageRegistrationMethodTest_14)
#set_tests_properties(itkImageRegistrationMethodTest_14 PROPERTIES #ATTACHED_FILES_ON_FAIL ${TEMP}/itkImageRegistrationMethodTest_14.txt)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_14
  COMMAND
  ITKRegistrationCommonTestDriver
  --full-output
  itkImageRegistrationMethodTest_14)

itk_add_test(
  NAME
  itkImageRegistrationMethodTest_15
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_15)

itk_add_test(
  NAME
  itkImageRegistrationMethodTest_16
  COMMAND
  ITKRegistrationCommonTestDriver
  --redirectOutput
  ${TEMP}/itkImageRegistrationMethodTest_16.txt
  itkImageRegistrationMethodTest_16)
set_tests_properties(itkImageRegistrationMethodTest_16 PROPERTIES ATTACHED_FILES_ON_FAIL
                                                                  ${TEMP}/itkImageRegistrationMethodTest_16.txt)

itk_add_test(
  NAME
  itkMeanSquaresPointSetToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMeanSquaresPointSetToImageMetricTest)
itk_add_test(
  NAME
  itkGradientDifferenceImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkGradientDifferenceImageToImageMetricTest)
itk_add_test(
  NAME
  itkHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkMutualInformationHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMutualInformationHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkMeanReciprocalSquareDifferencePointSetToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMeanReciprocalSquareDifferencePointSetToImageMetricTest)
itk_add_test(
  NAME
  itkMultiResolutionImageRegistrationMethodTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionImageRegistrationMethodTest)
itk_add_test(
  NAME
  itkCompareHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkCompareHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkMeanSquaresHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMeanSquaresHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest)
itk_add_test(
  NAME
  itkCorrelationCoefficientHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkCorrelationCoefficientHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkNormalizedCorrelationPointSetToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkNormalizedCorrelationPointSetToImageMetricTest)
itk_add_test(
  NAME
  itkKullbackLeiblerCompareHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkKullbackLeiblerCompareHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkNormalizedMutualInformationHistogramImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkNormalizedMutualInformationHistogramImageToImageMetricTest)
itk_add_test(
  NAME
  itkPointSetToSpatialObjectDemonsRegistrationTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkPointSetToSpatialObjectDemonsRegistrationTest)
itk_add_test(
  NAME
  itkPointSetToImageRegistrationTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkPointSetToImageRegistrationTest)
itk_add_test(
  NAME
  itkPointsLocatorTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkPointsLocatorTest)
itk_add_test(
  NAME
  itkKappaStatisticImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkKappaStatisticImageToImageMetricTest
  DATA{${ITK_DATA_ROOT}/Input/Spots.png})
itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMattesMutualInformationImageToImageMetricTest
  1
  1)
itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricTest2
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMattesMutualInformationImageToImageMetricTest
  1
  0)
itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricTest3
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMattesMutualInformationImageToImageMetricTest
  0
  1)
itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricTest4
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMattesMutualInformationImageToImageMetricTest
  0
  0)
itk_add_test(
  NAME
  itkMatchCardinalityImageToImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMatchCardinalityImageToImageMetricTest
  DATA{${ITK_DATA_ROOT}/Input/Spots.png})
itk_add_test(
  NAME
  itkMultiResolutionPyramidImageFilterWithResampleFilterTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionPyramidImageFilterTest
  Resample)
itk_add_test(
  NAME
  itkMultiResolutionPyramidImageFilterWithShrinkFilterTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionPyramidImageFilterTest
  Shrink)
itk_add_test(
  NAME
  itkRecursiveMultiResolutionPyramidImageFilterWithResampleFilterTest2
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionPyramidImageFilterTest
  Resample
  TestRecursive)
itk_add_test(
  NAME
  itkRecursiveMultiResolutionPyramidImageFilterWithShrinkFilterTest2
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMultiResolutionPyramidImageFilterTest
  Shrink
  TestRecursive)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_1
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_1)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_2
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_2)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_3
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_3)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_4
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_4)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_5
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_5)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_6
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_6)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_7
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_7)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_8
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_8)
itk_add_test(
  NAME
  itkImageRegistrationMethodTest_9
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_9)
itk_add_test(
  NAME
  itkRecursiveMultiResolutionPyramidImageFilterWithResampleFilterTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkRecursiveMultiResolutionPyramidImageFilterTest
  Resample)
itk_add_test(
  NAME
  itkRecursiveMultiResolutionPyramidImageFilterWithShrinkFilterTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkRecursiveMultiResolutionPyramidImageFilterTest
  Shrink)
itk_add_test(
  NAME
  itkNormalizedCorrelationImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkNormalizedCorrelationImageMetricTest)
itk_add_test(
  NAME
  itkMeanReciprocalSquareDifferenceImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMeanReciprocalSquareDifferenceImageMetricTest)
itk_add_test(
  NAME
  itkMeanSquaresImageMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMeanSquaresImageMetricTest)
itk_add_test(
  NAME
  itkMutualInformationMetricTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkMutualInformationMetricTest)
itk_add_test(
  NAME
  itkPointSetToPointSetRegistrationTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkPointSetToPointSetRegistrationTest)
itk_add_test(
  NAME
  itkImageToSpatialObjectRegistrationTest
  COMMAND
  ITKRegistrationCommonTestDriver
  --redirectOutput
  itkImageToSpatialObjectRegistrationTest.txt
  itkImageToSpatialObjectRegistrationTest)
set_tests_properties(
  itkImageToSpatialObjectRegistrationTest PROPERTIES ATTACHED_FILES_ON_FAIL
                                                     ${ITK_TEST_OUTPUT_DIR}/itkImageToSpatialObjectRegistrationTest.txt)
itk_add_test(
  NAME
  itkLandmarkBasedTransformInitializerTest
  COMMAND
  ITKRegistrationCommonTestDriver
  itkLandmarkBasedTransformInitializerTest)
itk_add_test(
  NAME
  itkBlockMatchingImageFilterTest
  COMMAND
  ITKRegistrationCommonTestDriver
  --compare
  DATA{Baseline/itkBlockMatchingImageFilterTest.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkBlockMatchingImageFilterTest.mha
  itkBlockMatchingImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/HeadMRVolume.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkBlockMatchingImageFilterTest.mha)

itk_add_test(
  NAME
  itkImageRegistrationMethodTest_17
  COMMAND
  ITKRegistrationCommonTestDriver
  itkImageRegistrationMethodTest_17)
itk_add_test(
  NAME
  itkEuclideanDistancePointMetricTestSquaredDistanceOff
  COMMAND
  ITKRegistrationCommonTestDriver
  itkEuclideanDistancePointMetricTest
  0)
itk_add_test(
  NAME
  itkEuclideanDistancePointMetricTestSquaredDistanceOn
  COMMAND
  ITKRegistrationCommonTestDriver
  itkEuclideanDistancePointMetricTest
  1)

set(ITKRegistrationGTests itkTransformInitializersGTest.cxx)
creategoogletestdriver(ITKRegistration "${ITKRegistrationCommon-Test_LIBRARIES}" "${ITKRegistrationGTests}")

if(BUILD_EXAMPLES)
  #The historical examples from RegistrationITKv3 should no longer be used
  #as exemplars for best practices, but do provide reasonable historically
  #relevant tests to exercise the toolkit in ways that older software
  #bases may continue to use for backwards compatibility reasons.
  add_subdirectory(RegistrationITKv3)
endif()
